博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ionic —指令
阅读量:5793 次
发布时间:2019-06-18

本文共 9402 字,大约阅读时间需要 31 分钟。

引用

指令

1. collection-repeat

是一个允许你渲染数千项列表,并且性能几乎不会减弱的指令。collection-repeat处理的数据必须是一个数组。

{
{item}}

 

2. ion-option-button  滑动显示按钮

隶属于ionItem

{
{item}}

 

效果图:滑动出现如下按钮

 

 

3. ion-delete-buttonion-reorder-button

{
{item}}!

 

删除:

$scope.delete_item=function(item){      var idx = $scope.items.indexOf(item);//    var idx = this.$index; 两种获取下标的方法        $scope.items.splice(idx,1);    };

 

Key:下标   item:值      可以通过传key,或者是传$index来获取下标

{
{$index}}---{
{key}}--- {
{item}}

 

$scope.deleteItem=function(index){    $scope.items.splice(index,1);}

 

排序:

$scope.move_item = function(item, fromIndex, toIndex) {   $scope.items.splice(fromIndex, 1);   $scope.items.splice(toIndex, 0, item);       console.log(fromIndex);       console.log(toIndex);       console.log(item);};

 

4. ion-slide-box

 

注入服务:$ionicSlideBoxDelegate

 $ionicSlideBoxDelegate.update();   /*注意异步请求的时候 更新 slide框*/

$ionicSlideBoxDelegate.$getByHandle("slideBox").loop(true);    循环后台数据的时候不连续滚动的解决办法,前提是标签里要写上delegate-handle="slideBox"

 

does-continue :是否循环切换

auto-play :  是否自动播放

slide-interval : 自动播放的间隔时间,默认为4000ms

show-pager :  是否显示分页器

pager-click - 分页器点击事件

pager-click属性应当设置为一个当前作用域上的函数调用表达式,这个函数将被 传入被点击的分页按钮对应的幻灯页序号:index

$scope.click=function (index) {    $ionicSlideBoxDelegate.slide(index);    /*$ionicSlideBoxDelegate.slide()跳转到指定的索引值*/}

 

on-slide-changed - 幻灯页切换事件

on-slide-changed属性应当设置为一个当前作用域上的函数调用表达式,这个函数 将被传入当前幻灯页的序号:index
active-slide - 当前幻灯页索引
active-slide属性应当设置为一个当前作用域上的变量,当幻灯片切换时,这个变量同步的反应当前的幻灯页索引号

 

5. ion-checkbox

{
{item.name}}

 

设置默认选中时,只需把当前的checked的值设置为true即可,checked:true

 

6. ion-radio

{
{item.text}}
$scope.items=[   {
'text':'支付宝',pic:'01.png'}, {
'text':'微信',pic:'02.png'}];$scope.sel = {val:"微信"};

ng-value的值等于ng-model的值得时候,默认被选中。

7. ion-toggle

{
{item.text}}
$scope.items=[ {text:"HTML5"}, {text:"php",selected:true}, {text:"CSS3",selected:true}];

8. ion-spinner

$scope.items = ["android","ios","ios-small","bubbles","circles", "crescent","dots","lines","ripples","spiral"];

9. $ionicModal 模态对话框

   1.新建一个html模板页面  里面的所有东西放在  ion-modal-view

   2.$ionicModal依赖注入 controller
   3.定义
   $ionicModal.fromTemplateUrl("my-modal.html",{
      scope:$scope
   }).then(function(model){
      $scope.modal=model;
   })  

angular.module("myApp", ["ionic"]).controller("myCtrl", function($scope, $ionicModal) {      $scope.name='1243';   /*定义*/   $ionicModal.fromTemplateUrl("my-modal.html",{  /*模板的路径*/         scope:$scope    /* 把我们当前作用域的值传入模板*/   }).then(function(model){      $scope.modal=model;              /* 给返回的 model赋值*/   })   $scope.openModal = function() {      $scope.modal.show();   /*显示*/   };   $scope.closeModal = function() {      $scope.modal.hide();   /*隐藏*/   };    $scope.removeModal = function() {        $scope.modal.remove();  /*移除*/    };   $scope.user={      username:'',        password:''   }   $scope.login=function(){      console.log($scope.user);      $scope.modal.hide();   }});

 

10. $ionicActionSheet

//在controller里注入$ionicActionSheet

controller("myCtrl",function($scope, $ionicActionSheet, $timeout)

 

显示

$scope.show = function() {      // Show the action sheet      $ionicActionSheet.show({         titleText: "操作当前文章",//  titleText - 上拉菜单的标题文本//  buttons - 自定义按钮数组。每个按钮需要一个描述对象,其text字段用于按钮显示         buttons: [            { text: "分享文章" },            { text: "移动到..." },            { text: "收藏..." }         ],//  buttonClicked - 自定义按钮的回调函数,当用户点击时触发         buttonClicked: function(index) {                    console.log('操作了第'+index+'个文章');                    return true;         },         cancelText: "取消",//  cancel - 取消按钮回调函数,当用户点击时触发         cancel: function() {           // add cancel code..                console.log('执行了取消操作');                return true;         },//  destructiveText - 危险选项按钮的文本。如果不设置此字段,则上拉菜单中不出现危险选项按钮         destructiveText: "删除",//  destructiveButtonClicked - 危险选项按钮的回调函数,当用户点击时触发         destructiveButtonClicked:function(){                console.log('执行了删除操作');                return true;         }      });      // For example's sake, hide the sheet after two seconds//    $timeout(function() {
// hideSheet();// }, 2000);// cancelOnStateChange - 当切换到新的视图时是否关闭此上拉菜单。默认为true// cssClass - 附加的CSS样式类名称 };

 

11.$ionicLoading  弹框显示并自动隐藏

需要在ccontroller里注入$ionicLoading 

触发显示默认1s后自动隐藏

   

$scope.load = function() {      //显示载入指示器      $ionicLoading.show({         template: "正在载入数据,请稍后...{
{name}}", noBackdrop:false,// duration:20000, scope:$scope }); $timeout(function(){ $ionicLoading.hide(); $scope.show=true; },2000);// template - 模板字符串// templateUrl - 内联模板的Url// scope - 要绑定的作用域对象// noBackdrop - 是否隐藏背景幕,遮罩层;true为不显示// hideOnStateChange - 当切换到新的视图时,是否隐藏载入指示器// delay - 显示载入指示器之前要延迟的时间,以毫秒为单位,默认为0,即不延迟// duration - 载入指示器持续时间,以毫秒为单位。时间到后载入指示器自 动隐藏。默认情况下, 载入指示器保持显示状态,知道显示的调用hide()方法

 

12.$ionicBackdrop 背景锁屏

需要在ccontroller里注入$ionicBackdrop

$ionicBackdrop.retain();   显示背景

$ionicBackdrop.release();   释放背景

13. list-inset

ion-item标签里添加class="list-inset"   列表不全屏显示,相当于上下左右有padding的效果;

14. tabs-item-hide、页面加载事件

class="tabs-item-hide"  隐藏底部tabs切换菜单

 

angular.module("appController",[]) .controller("newsController",function($scope,$rootScope){ /*页面加载前触发发的方法*/ $scope.$on('$ionicView.beforeEnter', function() { $rootScope.hideTab=''; }); /*页面加载完成触发发的方法*/ $scope.$on('$ionicView.afterEnter', function() {}, false); }) .controller("listDatailController",function ($scope,$rootScope){ /*页面加载前触发发的方法*/ $scope.$on('$ionicView.beforeEnter', function() { $rootScope.hideTab='tabs-item-hide'; }); // /*销毁事件 在二级页面 可以触发,效果有延迟*/ // $scope.$on('$destroy',function(){
// $rootScope.hideTab=''; // })})

15. $ionicPopover  下拉菜单弹出框

 

ShowPopover

$ionicPopover

$ionicPopover

 

angular.module("myApp", ["ionic"]).controller("myCtrl", function($scope, $ionicPopover) {   $ionicPopover.fromTemplateUrl("ez-popover.html", {      scope: $scope   })   .then(function(popover){      $scope.popover = popover;   })    //$event   $scope.openPopover = function($event) {        console.log($event);      $scope.popover.show($event);   };   $scope.closePopover = function() {      $scope.popover.hide();   };   //销毁事件回调处理:清理popover对象   $scope.$on("$destroy", function() {      $scope.popover.remove();   });   // 隐藏事件回调处理   $scope.$on("popover.hidden", function() {      // Execute action   });   //删除事件回调处理   $scope.$on("popover.removed", function() {      // Execute action   });});

 

 

16.  屏幕弹出框

app.controller("myCtrl",function($scope, $ionicPopup, $timeout) {   $scope.status = "";   // 显示定制弹出框   $scope.showPopup = function() {      $scope.data = {}      // 调用$ionicPopup弹出定制弹出框      $ionicPopup.show({         template: " ",         title: "请输入Wi-Fi密码",         subTitle: "密码为8位",         scope: $scope,         buttons: [            { text: "取消" },            {               text: "保存",               type: "button-positive",               onTap: function(e) {                  return $scope.data.wifi;               }            }         ]      })      .then(function(res) {         $scope.status = ["Wi-Fi密码到手了",":",res].join(" ");      });   };   // 确认弹出框   $scope.showConfirm = function() {      $ionicPopup.confirm({         title: "定制冰激凌",         template: "你确定要吃我的冰淇淋吗?",            okText:"OK"      })      .then(function(res) {         if(res) {            $scope.status = "凭什么吃我的冰淇淋!";         } else {            $scope.status = "谢谢你不吃之恩!";         }      });   };   //警告弹出框   $scope.showAlert = function() {      $ionicPopup.alert({         title: "不要吃果冻",         template: "它们可能是用旧的皮鞋帮做的!"      })      .then(function(res) {         $scope.status = "感谢上帝,你没吃鞋帮哦!11";      });   };   //输入提示框   $scope.showPrompt = function(){      //todo....        $ionicPopup.prompt({            title: "不要吃果冻",            template: "它们可能是用旧的皮鞋帮做的!"        })        .then(function(res) {            $scope.status = "感谢上帝,你没吃鞋帮哦!"+res;        });   }});

17.$scope.$on  广播

$emit只能向parent controller传递event与data( $emit(name, args) )

 $broadcast只能向child controller传递event与data( $broadcast(name, args) )
 $on用于接收event与data( $on(name, listener) )

 

加载前、加载后、销毁广播

/*beforeEnter  加载前*/$scope.$on('$ionicView.beforeEnter', function() {    $rootScope.hideTabs='';    /*底部菜单显示*/});/*afterEnter  数据加载完成*/$scope.$on('$ionicView.afterEnter', function() {}, false);/*$destroy  销毁的时候*/$scope.$on('$destroy',function(){})

 

 

18.ion-side-menus 侧边栏

单独使用index结构:

头部

 

配合tabs结构:

index.html代码:

tabs.html代码:

 

转载于:https://www.cnblogs.com/SPHmomo/p/7535202.html

你可能感兴趣的文章
Android NDK开发之旅33 NDK Linux入门之POSIX线程原语
查看>>
Android多线程+单线程+断点续传+进度条显示下载
查看>>
你可能忽略的js类型转换
查看>>
让react用起来更得心应手——(react-router原理简析)
查看>>
自定义View onLayout篇
查看>>
iOS 打破沙盒限制 处理其他App的Office等文件(上传、下载、预览)
查看>>
Redis Manager 常见问题汇总
查看>>
葡萄城活字格 Web 应用生成平台 — V4.0 技术白皮书
查看>>
白话生成对抗网络 GAN,50 行代码玩转 GAN 模型!【附源码】
查看>>
微信小程序之页面打开数量限制
查看>>
带你走过ViewPager不刷新界面的坑
查看>>
tomcat设置开机自启动和后台运行
查看>>
1 Android环境搭建
查看>>
【许晓笛】EOS 系统架构图解
查看>>
Spring中XML,注解,JavaConfig如何选择
查看>>
搭建JEESZ分布式架构1--CentOs下安装jdk7(环境准备)
查看>>
数据更新| Qtum 量子链全球大使招募计划
查看>>
小程序初探之三-一个定位bug
查看>>
分布式锁的解决方案(二)
查看>>
如何写出一个好的单例模式
查看>>